#ifndef FRIEND_H
#define FRIEND_H

#include <QWidget>
#include <QTextEdit>
#include <QListWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGroupBox>
#include "Protocol.h"
#include "privatechat.h"
#include"viewusrsdialog.h"
namespace Ui {
class Friend;
}

class Friend : public QWidget
{
    Q_OBJECT

public:
    explicit Friend(QWidget *parent = nullptr);
    ~Friend();

    void init();

    void showAllOnlineUsers(const QStringList &usrList);
    void updateFriendList(const QMap<QString,QString> &friendList);
    QString searchName();

    bool validateString(const QString &input);


    //好友列表刷新
    void flushFriendList();
    //显示所有在线用户
    void showAllUsrs();
    //查找用户
    void searchUsrs();
    //删除好友
    void deleteFriend();
    //主动私聊好友
    void sendPrivateChat();
    //被动私聊好友
    void recvPrivateChat(const QString &chatName,const QString &msg);
    //查找私聊窗口
    PrivateChat *searchPrivateChat(const QString &chatName);
    //消息广播
    void mesBroadCast();
    //获取查找数据
    void getFriendSearchData(const QList<UserInfo>& usrList);

    //更新搜索页面
    void flushSearchPage();
signals:
    void sendSearchData(const QList<UserInfo>& usrList);
    void flushSignal();
private:
    Ui::Friend *ui;

    ViewUsrsDialog *m_usrDlg=nullptr;
    //好友列表
    QListWidget *m_friendListWidget;


    //根据name查找用户
    QString m_searchName;

    //主动私聊窗口列表
    QList<PrivateChat*>m_PrivateChatList;

};

#endif // FRIEND_H
